package com.briup.bookstore.domain.dto;

import com.briup.bookstore.common.constraints.Add;
import com.briup.bookstore.common.constraints.Update;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Null;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

import java.io.Serializable;

/**
 * 地址新增或修改数据的DTO实体
 */
@Data
public class AddressModifyDTO implements Serializable {
    /**
     * 收货地址ID：新增数据时，id必须为null；修改数据时id必须不能为null；
     * 在参数校验注解中，可以通过注解内的groups属性对注解进行分组；
     * 如此校验注解就可以根据条件进行选择在什么时候生效
     */
    @Null(groups = Add.class, message = "新增数据时，id必须为null")
    @NotNull(groups = Update.class, message = "修改数据时，id必须不能为null")
    private Integer id;
    /**
     * 收件人姓名
     */
    @NotBlank(message = "收件人姓名不能为空")
    private String receiverName;
    /**
     * 省市区地址
     */
    @NotBlank(message = "省市区地址不能为空")
    private String urbanAddr;
    /**
     * 详细地址
     */
    @NotBlank(message = "详细地址不能为空")
    private String detailAddr;
    /**
     * 收件人电话
     */
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式错误")
    private String phone;
    /**
     * 用户ID
     */
    private Integer userId;

}
